/**
 使用
 
 */
/*
package com.leo.tool;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.OutputStream;
import java.io.SequenceInputStream;
import java.io.InputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Vector;
public class 功能_文件分割和合并 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//run_分割();
		//run_合并();
		
	}
	private static void run_分割(){
	//这个写需要分割文件的路径
		File file=new File("C:\\Users\\Administrator\\Desktop\\DJ\\视频.mp4") ;
		//文件路径，大小字节 1024=1kb 1024*1024=1mb  目的地路径 头部
		division(file,1024*1024*20,"E:\\eclipse-workspace\\test\\RW\\视频");
	}
	private static void division(File targetFile,long cutSize,String distpath) {
		if(targetFile==null)return;
		//计算需要切割成几份      
		int num=targetFile.length()%cutSize==0?
				(int)(targetFile.length()/cutSize):(int)(targetFile.length()/cutSize+1);
		//构造一个文件缓冲输入流
		try {
			BufferedInputStream in =new BufferedInputStream(new FileInputStream(targetFile));
			BufferedOutputStream out=null;
			
			byte[] bytes=null;
			int len=-1;
			int count=0;
			
			for(int i=0;i<num;i++) {
				out=new BufferedOutputStream(
						new FileOutputStream(new File(
								distpath+(i+1)+"-temp-"+targetFile.getName())));
				//1.文件的分割次数 处理方式
				if(cutSize<=1024) {
					bytes=new byte[(int)cutSize];
					count=1;
				}else {
					bytes=new byte[1024];
					count=(int)cutSize/1024;
				}
				//2.文件的写入 处理方式
				//循环条件：文件数大于0 并且 读取的字节数组大小1mb大小
				//（1）大于 规格大小的处理方式
				while(count>0 &&(len=in.read(bytes))!=-1) {
					out.write(bytes,0,len);
					out.flush();
					count--;
				}
				//（2）小于 规格大小的 处理方式
				if(cutSize%1024!=0) {
					bytes=new byte[(int)cutSize%1024];
					len=in.read(bytes);
					out.write(bytes,0,len);
					out.flush();
				}
				System.out.println("文件切割完毕,文件存放路径："+distpath+(i+0)+"-temp-"+targetFile.getName());
			}
		in.close();
		
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
	
	private static void run_合并() {
		try {
			//这边写的是需要合并的文件
			InputStream in1=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频1-temp-视频.mp4"));
			InputStream in2=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频2-temp-视频.mp4"));
			InputStream in3=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频3-temp-视频.mp4"));
			InputStream in4=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频4-temp-视频.mp4"));
			InputStream in5=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频5-temp-视频.mp4"));
			InputStream in6=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\视频6-temp-视频.mp4"));
			//这个是个集合工具类 在C++中也有这个容器
			//vector 类 指定类型为字节输入流容器
			Vector<InputStream> v=new Vector<InputStream>();
			v.add(in1);
			v.add(in2);
			v.add(in3);
			v.add(in4);
			v.add(in5);
			v.add(in6);
			//这是枚举接口 
			Enumeration<InputStream> es=v.elements();
			merge(es);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	private static void merge(Enumeration<InputStream> es) {
		//读：将枚举类型es里面的vector容器的字节输入流中的文件1-6 放入 序列字节流sis中
		SequenceInputStream sis=new SequenceInputStream(es);
				//写：确定文件位置 和缓冲输出流的规格
		String distpath="E:\\eclipse-workspace\\test\\RW\\视频合并.mp4"; //可以修改路径
		try {
			BufferedOutputStream bos=new BufferedOutputStream(
					new FileOutputStream(distpath));
			//缓冲规格是1024字节，每1mb刷新1次
			byte[] bytes=new byte[1024];
			int len=-1;
			while((len=sis.read(bytes))!=-1) {
					bos.write(bytes,0,len);
					bos.flush();
			}
			bos.close();
			sis.close();
			System.out.println("合并完成。 文件路径："+distpath);
		} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
				e.printStackTrace();
		} catch (IOException e) {
					// TODO Auto-generated catch block
		e.printStackTrace();
		}
						
	}
	
}
*/


